export default {
  //开启命名空间
  namespaced: true,
  state:()=>({
    //收货地址
    //从本地读取收货地址 如果没有那么为{}
    address:uni.getStorageSync('address')||{},
    //设置登录token
    token:uni.getStorageSync('token')||'',
    //用户的基本信息
    userinfo:uni.getStorageSync('userinfo')||null,
   // 重定向的 object 对象 { openType, from }
    redirectInfo:null
  }),
  mutations:{
    //更新收货地址的方法
    updateAddress(state,address){
      state.address=address
        // 2. 通过 this.commit() 方法，调用 m_user 模块下的 saveAddressToStorage 方法将 address 对象持久化存储到本地
      this.commit('m_user/saveAddressToStorage')
    },
    //更新用户信息的方法
    updateUserInfo(state,userinfo){
      state.userinfo=userinfo
      this.commit('m_user/saveUserInfoToStorage')
    },
    //更新token的方法
    updateToken(state,token) {
      state.token=token
      //调用保存token 到本地的方法
      this.commit('m_user/saveTokenToStorage')
    },
    //更新重定向的 object 对象 
    updateRedirectInfo(state,info) {
      state.redirectInfo=info
      console.log(info)
    },
    //收货地址持久化存储到本地的方法
    saveAddressToStorage(state){
      uni.setStorageSync('address',state.address)
    },
    //将userinfo持久化本地的方法
    saveUserInfoToStorage(state){
      uni.setStorageSync("userinfo",state.userinfo)
    },
    //将token进行本地持久化的方法
    saveTokenToStorage(state) {
      uni.setStorageSync('token',state.token)
    }
    
  },
  getters:{
    //收货地址的拼接
    addstr(state){
      //如果没有收获地址  那么就为空
      if(!state.address.provinceName) return ''
        // 拼接 省，市，区，详细地址 的字符串并返回给用户
          return state.address.provinceName + state.address.cityName + state.address.countyName + state.address.detailInfo
    }
  }
}